A computer can include firmware that performs initialization of the computer's hardware during the boot process of the computer. The firmware can also load and perform setup operations for the operating system of the computer. The firmware can be implemented in a read-only memory (“ROM”) affixed to the motherboard of the computer. A computer can also include, or be attached to, one or more devices such as video cards, displays, disk drives, and input/output devices such as a keyboard, for example. The devices can be on-board devices directly attached to the motherboard. The devices can also be add-on devices that are connected to the motherboard via slots (e.g., a PCI card slot) or connected to the motherboard via a USB port, as just some examples.
During firmware development and testing, firmware developers may include code that generates debug trace statements providing information regarding the state of the firmware when executed or providing information that execution of the firmware reached a point of interest, such as the entry or exit of a function. In some traditional testing environments, the debug trace statements are output to a display via video card connected to the computer executing the firmware, and firmware developers can watch the video display to view and analyze the debug trace statements. In other traditional testing environments, the debug trace statements are output to a peripheral device (e.g., a printer) via a serial communications port, such as a RS-232 port.
Some embedded computing systems having firmware do not have video cards, displays, or serial communications ports for interfacing peripheral devices with the computing systems. In addition, some computing systems used for testing firmware may have defective and inoperative video cards, displays, and/or serial communications ports. Testing of such computing systems using debug trace statements can be difficult as the traditional methods for outputting the debug trace statements are not available.